package mysql8学习.高级.第07章_InnoDB数据存储结构存储;

/**
 * 附录:数据页加载的三种方式
 * InnoDB从磁盘中读取数据的最小单位是数据页。
 * 而你想得到的id = xx的数据，就是这个数据页众多行中的一行。
 * 对于MySQL存放的数据，逻辑概念上我们称之为表,在磁盘等物理层面而言是按数据贞形式进行存放的，
 * 当其加载到MySQL中我们称之为缓有页。
 *
 * 如果缓冲池中没有该页数据，那么缓冲池有以下三种读取数据的方式，每种方式的读取效率都是不同的:
 * 1.内存读取
 * 如果该数据存在于内存中，基本上执行时间在1ms左右，效率还是很高的。
 *
 * 2.随机读取
 * 如果数据没有在内存中，就需要在磁盘上对该页进行查找，整体时间预估在10ms 左右,
 * 这10ms中有6ms是磁盘的实际繁忙时间(包括了寻道和半圈旋转时间)，
 * 有3ms是对可能发生的排队时间的估计值，另外还有1ms的传输时间，将页从磁盘服务器缓冲区传输到数据库缓冲区中。
 * 这10ms看起来很快，但实际上对于数据库来说消耗的时间已经非常长了，因为这还只是一个页的读取时间。
 *
 * 3.顺序读取
 * 顺序读取其实是一种批量读取的方式， 因为我们请求的数据在磁盘上往往都是相邻存储的,
 * 顺序读取可以帮我们批量读取页面，这样的话，一次性加载到缓冲池中就不需要再对其他页面单独进行磁盘I/O操作了。
 * 如果一个磁盘的吞吐量是40MB/S，那么对于一个 16KB大小的页来说，一次可以顺序读取 2560 (40MB/16KB) 个页,
 * 相当于一个页的读取时间为 0.4ms。
 * 采用批量读取的方式，即使是从磁盘上进行读取，效率也比从内存中只单独读取一个页的效率要高。
 *
 */
public class J_数据页加载的三种方式 {
}
